//#include <stdio.h> // C 风格包含头文件的方式  C++允许
#include <cstdio>  // C++ 风格包含头文件的方式
// 两种包含头文件风格的区别：（命名空间不一样）
// stdio.h 这种风格会将头文件中的内容放在全局空间中
// cstdio 这种风格会将头文件中的内容放在 std 标准命名空间中


void func(void *p){
    // int *q = p; // C++的编译器更严格 这种隐式强转会报错
    int *q = (int *)p; // 需要写成显式强转
    // 使用std命名空间中的printf的标准用法
    // std::printf("func : *q = %d\n", *q); // 10
    
    // 有些编译器为了考虑兼容性 也会将 stdio.h 中的内容放在全局区一份
    printf("func : *q = %d\n", *q); // 10
    *q = 20;
}

// C++中要求main函数必须有返回值 且必须是int类型
int main(int argc, const char *argv[]){
    int num = 10;
    int *x = new int;
    func(&num);
    printf("main : num = %d\n", num); // 20 

    return 0;
}